/*
 * Copyright (c) 2021 - Manifold Systems LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *       http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package manifold.ext.props;

import manifold.ext.props.rt.api.var;
import manifold.ext.props.rt.api.val;

public interface ISomeInterface {
  // inferred val
  int getFoo();

  // explicit var
  @var int varFoo;

  // explicit static properties are not supported, they are inferred from getter/setter
//  static @val int staticFoo;
  static int getStaticFoo() { return 2; }

  // use iterface props directly
  default int useProps() {
    varFoo = 3;
    return getFoo() + varFoo + getStaticFoo() + staticFoo;
  }
}